这篇内容是在有道云旧笔记基础上重新整理的 运维与环境配置 笔记。原始记录偏碎片化,这里补充了使用场景、阅读顺序和落地时需要注意的边界,方便以后在项目里快速复用。
适用场景 本地开发环境、服务器环境或容器环境出现类似问题时,用来快速回忆处理路径。 需要把零散命令整理成可复查步骤,避免每次重新搜索同一类配置。 发布、部署或系统调整前,用作操作前检查和回滚思路的参考。 核心要点 正文已经按 「参考资料」、「TWRP的使用方法/双清、三清、四清解释」、「SSH配置」、「可以插着数据线通过adb命令来创建证书、用户等」 等小节组织,阅读时可以先定位到当前问题对应的小节。 保留了 23 段可直接参考的代码或命令,主要涉及 bash、shell、cp,复制前需要按当前项目路径、版本和变量名做调整。 涉及命令行操作时,建议先在测试目录或测试环境执行,确认输出符合预期后再应用到生产环境。 参考资料 TWRP的使用方法/双清、三清、四清解释 SSH配置 # 确保服务已启动
sudo systemctl start ssh
# 加入开机启动
sudo systemctl enable ssh
可以插着数据线通过adb命令来创建证书、用户等 # 查看连接设备,记得开启开发者模式
adb devices
# 进入shell
adb shell
Ubuntu Touch 24.04 系统 ####在 UT 24.04(noble) 中:
Libertine 容器路线,不需要 apt update 创建容器(24.04) 1 2 3 4 5 6 7 8 libertine-container-manager create \ -i noble \ -n noble # 安装完成后执行 libertine-container-manager list #看到下述,说明安装成功 noble
第二步:进入 dev 容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 libertine-container-manager exec \ -i dev \ -c bash #看到如下 groups: cannot find name for group ID 32011 I have no name!@ubuntu-phablet:~$ 为什么会发生?(Ubuntu Touch 的真实结构) 关键点:Libertine 不是完整虚拟机 Ubuntu Touch 的 Libertine: 使用 宿主用户(phablet) 把 宿主的一些 UID/GID 直接带进容器 但 容器内的 /etc/group 是“干净版 Ubuntu” 所以会出现: 层 结果 宿主系统 GID=32011 是真实存在的(UT 自定义) 容器系统 /etc/group 没定义这个 GID 👉 因此 groups 命令只能显示 ID,找不到名字
进入容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 libertine-container-manager exec -i noble -c bash #拆看动迁用户ID id -u 32011 # 创建lance用户 echo "lance:x:32011:32011::/home/lance:/bin/bash" >> /etc/passwd # 创建目录 mkdir -p /home/lance # 黜退容器 exit # 再次进入 发现已经对了 libertine-container-manager exec -i noble -c bash lance@ubuntu-phablet:~$
安装vin 1 2 # 只能在宿主机中安装,容器没有sudo权限 libertine-container-manager install-package -i noble -p vim
备份原地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # 注意这里是宿主机 libertine-container-manager exec -i noble -c bash -e ' cp /etc/apt/sources.list.d/ubuntu.sources ./ubuntu.sources.bak ' # 直接写入 libertine-container-manager exec -i noble -c "bash -c ' cat > /etc/apt/sources.list.d/ubuntu.sources << EOF Types: deb URIs: https: Suites: noble noble-updates noble-backports Components: main universe restricted multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: https: Suites: noble-security Components: main universe restricted multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg EOF '" # 查看新源 libertine-container-manager exec -i noble -c "cat /etc/apt/sources.list.d/ubuntu.sources" # 应该看到 URIs: https: # 更新apt libertine-container-manager update -i noble
开启SSH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 libertine-container-manager install-package -i noble -p openssh-server # 只能创建用户级 创建 libertine-container-manager exec -i noble -c "mkdir -p ~/.ssh/sshd" # 创建秘钥 libertine-container-manager exec -i noble -c "ssh-keygen -t ed25519 -f ~/.ssh/sshd/ssh_host_ed25519_key -N ''" #验证秘钥是否存在 libertine-container-manager exec -i noble -c "ls -l ~/.ssh/sshd" # 设置权限 libertine-container-manager exec -i noble -c "mkdir -p ~/.ssh/sshd && chmod 700 ~/.ssh ~/.ssh/sshd"
快捷命令 # 快速切换root
sudo su root
常见错误 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 输入mount -o remount rw /(注意不要输错,那个是小写字母o,不是数字0 ,然后rw和/中间有一个空格) #这时候你会发现手机重启后又得重来一遍,而且安装的软件设置开机自启也会有点问题的,故写一个shell 开机启动挂载 # 添加开机脚本 ========================================================= # /etc/rc.local nohup sh /home/phablet/startup.sh > /home/phablet/startup-log.txt 2 >&1 # startup.sh ====================================================================== #! /bin/sh if [ -d /home/phablet/.startup.d ]; then for i in /home/phablet/.startup.d do if [ -r $i ] then $i fi done unset i fi # 设置可执行权限 =============================================================================== chmod +x /home/phablet/.startup.d/mounts.sh /home/phablet/startup.sh
更换源 1 2 3 4 vi /etc/apt/sources.list :%s/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g :%s/http:\/\/ports.ubuntu.com/https:\/\/mirrors.tuna.tsinghua.edu.cn/g
安装配置Docker 安装相关包 1 2 3 4 5 6 7 8 9 10 11 12 $ sudo apt-get update # 先更新一下软件源库信息 $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common # 或者这样安装 sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
添加软件仓库 官方仓库 1 2 3 4 5 6 7 8 # 添加 Docker 官方的 GPG 密钥(为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥) $ curl -fsSL https: # 设置稳定版本的apt仓库地址 $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $ (lsb_release -cs) \ stable"
阿里云仓库 1 2 3 4 5 6 7 8 9 10 11 $ curl -fsSL https: $ curl -fsSL https: # https: $ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $ (lsb_release -cs) \ stable" $ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $ (lsb_release -cs) \ stable"
安装docker 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 sudo curl -fsSL https: sudo sh ./get -docker.sh --dry-run $ sudo apt-get update $ sudo apt-get install docker-ce # 安装最新版的docker $ sudo apt-get install \ ca-certificates \ curl \ gnupg -y $ sudo mkdir -m 0755 -p /etc/apt/keyrings $ curl -fsSL https: $ echo \ "deb [arch=" $ (dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo " $VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null #如果需要安装指定版本的,使用以下命令: $ apt-cache madison docker-ce | awk '{ print $3 }' $ apt-cache policy docker-ce # 查看可供安装的所有docker版本 $ sudo apt-get install docker-ce=18.03.0 ~ce-0 ~ubuntu # 安装指定版本的docker `` # 上面方式只安装成功过一次 $ sudo apt-get install docker-ce docker-ce-cli containerd.io -y # # 检查docker是否安装成功 $ docker --version # 查看安装的docker版本 $ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} $ mkdir -p $DOCKER_CONFIG/cli-plugins $ curl -SL https: # 这里要注意的是CPU类型(指令集) $ uname -a $ lscpu # 我这里一直安装失败,是应为官网curl的文件版本一直报错,忘记自己我的物理机非x86_64,而是aarch64 对应修改文件名/地址即可 # 无法加速的github使用 curl -SL https: 如果你已经把 Docker Compose 的文件下载到本地,可以按照以下步骤手动解压并安装: 确保文件完整性: 确认你下载的文件是正确的 Docker Compose 二进制文件,可以通过以下命令检查文件的大小和校验: bash 复制代码 ls -lh /path/to/docker-compose-linux-aarch64 复制文件到目标目录: 将文件复制到 $DOCKER_CONFIG/cli-plugins/ 目录下,并且确保文件名为 docker-compose(去掉 .tar 或 .gz 后缀,如果有的话)。 bash 复制代码 cp /path/to/docker-compose-linux-aarch64 $DOCKER_CONFIG/cli-plugins/docker-compose 授予执行权限: 给文件授予执行权限: bash 复制代码 chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose 验证安装: 你可以通过以下命令验证 Docker Compose 是否已正确安装: bash 复制代码 docker compose version 这样就完成了离线安装。由于没有下载到文件的解压需求,直接将二进制文件复制并授权即可。 $ sudo systemctl enable docker.service
实践检查清单 执行命令前确认当前用户、工作目录、端口、容器名和目标路径,避免把示例值直接用于生产环境。 改配置前先备份原文件;涉及服务 reload/restart 时,先用检查命令验证配置可用。 复盘小结 这篇笔记更适合作为问题排查或方案落地前的速查材料。后续如果在真实项目中再次遇到同类问题,可以继续把具体版本、报错信息、最终取舍和验证结果补到对应小节里,让它从代码片段逐步沉淀成完整方案。
Author: 蓝思同学
Permalink: https://www.lancema.com/posts/2023/DevOps/Ubuntu touch.html
Slogan: small is beautiful, small is powerful !